/*
 *
 *  Copyright (C) 2007-2020 SimplyCore, LLC
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 *
 */

#ifndef lIIlllIll
#define lIIlllIll
#include "urb_chain.h"
#include "sg.h"

#define lIlIIlll		(0x3d1+4309-0x14a6)
#define IIllIII		(0xcc7+1151-0x1145)
#define lIllIlI		(0xda3+384-0xf21)
#define llIllllII	(0x2199+910-0x2524)
#define IllIlll		(0x306+8484-0x2426)

#define llllIll		(0x565+7608-0x231d) 
#define IIlIlll	(0x7e2+2779-0x12bc) 
#if KERNEL_GT_EQ((0x699+1345-0xbd8),(0x578+1590-0xba8),(0xe9a+4183-0x1ed2))
#define IllIIll			(0x3bb+266-0x4c3) 
#endif
struct IllII{size_t IlIll;struct kref IllIll;atomic_t state;llIIII IIllI;int 
lIllll;
IIIllIIlI llIlIlI;lIllIl endpoint;
struct list_head llllIl;struct IIlll*IIIll;union{struct{struct urb*lIlll;
void*llIIl;
}lIIIll;struct{struct IlIlII*IIIllll;
struct lIlIllI*lIIlll;
}lIllII;
#if KERNEL_GT_EQ((0x47f+2827-0xf88),(0x185+7862-0x2035),(0x11d6+4627-0x23ca))
struct{struct urb*lIlll;
struct lIlIIlIl sg;}IIIlllI;
#endif
};char IIIIIlI:(0xa75+6330-0x232e);
char lIllIII:(0x969+4826-0x1c42);



};struct llIlIllI{struct list_head IIIIll;
llIIII IIllI;int lllIlIIll;int lIIIIllIl;};
#ifdef _USBD_DEBUG_MEMORY_
extern atomic_t IIllIIllI;extern atomic_t IIlllIllI;extern atomic_t lIIlIIll;
extern atomic_t IIlIlllIl;
#ifdef ATOMIC64_INIT
extern atomic64_t lllIIlII;
#endif
static inline struct urb*IIIIIIIl(int llIIIllll,gfp_t llllI){atomic_inc(&
IIllIIllI);return usb_alloc_urb(llIIIllll,llllI);}static inline void lllllIlI(
struct urb*urb){atomic_inc(&IIlllIllI);usb_free_urb(urb);}static inline void*
IIIllII(size_t IlIll,int flags){atomic_inc(&lIIlIIll);
#ifdef ATOMIC64_INIT
atomic64_add(IlIll,&lllIIlII);
#endif
return kmalloc(IlIll,flags);}static inline void*IlllIIl(size_t IlIll,int flags){
atomic_inc(&lIIlIIll);
#ifdef ATOMIC64_INIT
atomic64_add(IlIll,&lllIIlII);
#endif
return kzalloc(IlIll,flags);}static inline void lIlIll(const void*IIlIllIll){
atomic_inc(&IIlIlllIl);return kfree(IIlIllIll);}
#else 
#define	IIIIIIIl	usb_alloc_urb
#define	lllllIlI	usb_free_urb
#define	IIIllII		kmalloc
#define	IlllIIl		kzalloc
#define	lIlIll			kfree
#endif 
#ifdef _USBD_ENABLE_STUB_
struct IllII*lllIlllll(struct IIlll*IIIll,const void __user*IllIl,size_t lIlIIIl
);int IlllIIIlI(struct IllII*lIlII,void __user*IllIl,size_t lIlIIIl);struct 
IllII*llIIIlIII(struct IllII*lIlII,gfp_t llllI);void llIllll(struct IllII*lIlII)
;void IllIIlII(struct kref*IIIlIll);
#endif
void lIIIlllII(struct usb_device*IIIlI,u8*IIlllIll,u8*IIIIllll,u8*IlIIIlIl);
const char*IIIIIIIll(unsigned long IlIIllI);const char*IIllIlIIl(unsigned long 
IlIIllI);void lIIlllIIl(struct urb*lIlll,llIIII IIllI);void llllIII(lIIll IIlIl)
;
#ifdef _USBD_ENABLE_VHCI_
int lIlIlIIlI(struct list_head*lllIlIl,llIIII IIllI,void*llIIl,size_t IlIIIl);
int IllIIllll(lIIll IIlIl,struct list_head*lllIlIl,int*status);
#endif
int lllIIIll(lllII status);int IlllIIllI(void*IllllllIl,struct vm_area_struct*
IlllIll);llIIII llIllIIII(void);size_t IlIIIllI(struct usb_iso_packet_descriptor
*IlIllll,int llIlI,void*llIIlIl,void*lllIll,int IIlIlIlI);size_t IllIIIlll(
struct usb_iso_packet_descriptor*IlIllll,int llIlI,int IIlIlIlI);void IlllIlllI(
dma_addr_t llIIlIl,void*lllIll,unsigned long IIlIIl);void IllIlIIII(void*llIIlIl
,dma_addr_t lllIll,unsigned long IIlIIl);char*llIlllII(struct kobject*kobj,gfp_t
 IIIIIIIII);void lIlIlIIIl(char*IIlIIll);int IllIIIIIl(struct device*dev);int 
llIIIIllI(struct device*dev);int IIlIIlIlI(struct device*dev);
#if KERNEL_GT_EQ((0xaab+5034-0x1e53),(0x3e8+7745-0x2223),(0x1717+3472-0x2491))
void IllIlIlI(struct device*dev,int lIlllIll);int lIIlIllI(struct device*dev);
#endif
#if KERNEL_GT_EQ((0xc71+2146-0x14d1),(0x15c7+826-0x18fb),(0x1b95+2176-0x23f7))
#define llIIIl(lIlIIIlll) dev_name((lIlIIIlll))
#else
#define llIIIl(lIlIIIlll) (lIlIIIlll)->bus_id
#endif
#if KERNEL_GT_EQ((0xd2f+2309-0x1630),(0x1139+4581-0x2312),(0x14a1+2110-0x1cdf))
#define IlIllIlI(lIIIllIl) ((lIIIllIl)->bus->controller->driver ? \
			(lIIIllIl)->bus->controller->driver->name : (lIIIllIl)->bus->sysdev->driver->\
name)
#else
#define IlIllIlI(lIIIllIl) ((lIIIllIl)->bus->controller->driver->name)
#endif
#if KERNEL_LT_EQ((0x13b7+3370-0x20df),(0xab4+2162-0x1320),(0x98f+1401-0xef9))
#include <asm/semaphore.h>
struct mutex{struct semaphore lIIlIIIll;};static inline void mutex_init(struct 
mutex*mutex){sema_init(&mutex->lIIlIIIll,(0x163+30-0x180));}static inline void 
mutex_lock(struct mutex*mutex){down(&mutex->lIIlIIIll);}static inline void 
mutex_unlock(struct mutex*mutex){up(&mutex->lIIlIIIll);}
#endif
#endif 

